// 取消令牌类，用于控制上传取消
class CancelToken {
  bool _isCancelled = false;
  final List<Function()> _cancelListeners = [];

  bool get isCancelled => _isCancelled;

  // 添加取消监听器
  void addListener(Function() listener) {
    _cancelListeners.add(listener);
  }

  // 移除取消监听器
  void removeListener(Function() listener) {
    _cancelListeners.remove(listener);
  }

  // 取消操作
  void cancel() {
    if (!_isCancelled) {
      _isCancelled = true;

      // 通知所有监听器
      for (final listener in _cancelListeners) {
        try {
          listener();
        } catch (e) {
          print('调用取消监听器时出错: $e');
        }
      }
    }
  }
}
